#include <iostream>
#include <vector>
using namespace std;
#include "LecteurPhraseAvecArbre.h"

int main(int argc, char* argv[]) {
    char nomFich[255];
    vector<string> declaration;
    if (argc != 2) {
        cout << "Usage : " << argv[0] << " nom_fichier_source" << endl << endl;
        cout << "Entrez le nom du fichier que voulez-vous interpreter : ";
        cin.getline(nomFich, sizeof (nomFich));
    } else
        strncpy(nomFich, argv[1], sizeof (nomFich));

    LecteurPhraseAvecArbre lp(nomFich);
    lp.analyse();
    if(lp.getNbErreur()==0){
    cout << endl << "Arbre Abstrait : " << endl;
    cout << "================" << endl;
    lp.getArbre()->afficher();
    cout << endl << "Table des symboles avant evaluation : " << lp.getTs();
   declaration = lp.generationAda();
    cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
    lp.getArbre()->getValeur();
    cout << endl << "Table des symboles apres evaluation : " << lp.getTs();

    cout << endl << "Version du programme en Ada : " << endl;
    cout << "with P_Esiut; use P_Esiut;" << endl;
    for (unsigned int i = 0; i < declaration.size(); i++) {
        if (i < declaration.size() - 1)
            cout << declaration[i] << endl;
        else {
            lp.getArbre()->afficherAda();
            cout << declaration[i] << endl;
        }
    }
    }   
    return 0;
}
